#include <bits/stdc++.h>

using namespace std;

struct node { node*ch[30]; int Sum;int k; }U[6100000],*root;

int	ALL; int	n;

char	str1[610000][15];
char	str2[20];

void	Insert(node*& t,const char* val,const int k)
{
	if(!t)t=U+(ALL++);
	if(!*val){t->k=k;return ;}
	Insert(t->ch[val[0]-'a'],val+1,k);
	return ;
}

int	Find(node*& t,const char* val)
{
	if(!t)return 0;
	if(!*val)return t->k;
	return Find(t->ch[val[0]-'a'],val+1);
}

char	getstr(char* str)
{
	char	ch=getchar();
	int	c=0;
	while((ch>0 && ch<'A') || (ch>'Z' && ch<'a') || ch>'z'){printf("%c",ch),ch=getchar();}
	while((ch>='a' && ch<='z') || (ch>='A' && ch<='Z')) { str[c++]=ch; ch=getchar(); }
	str[c]=0;
	return ch;
}

char	str[20];

int main()
{
	int	cnt=0;
	scanf("%s",str);
	root=U,ALL++;
	while(true)
	{
		scanf("%s%s",str1[++cnt],str2);
		if(strcmp(str1[cnt],"END")==0)break;
		Insert(root,str2,cnt);
	}
	fgets(str,10,stdin);
	while(true)
	{
		char	tt=getstr(str);
		if(tt==-1)break;
		if(strcmp(str,"END")==0)break;
		int	t;
		if((t=Find(root,str)))printf("%s",str1[t]);
		else	printf("%s",str);
		printf("%c",tt);
	}
	return 0;
}
